home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 7
/
FM Towns Free Software Collection 7.iso
/
taropyon
/
cci
/
install.cci
< prev
next >
Wrap
Text File
|
1993-11-30
|
8KB
|
274 lines
/*************************************************************************
* インストールプログラム
*************************************************************************/
#include "ccilib.h"
/* パレットデータ(HEwin 配色) */
char PltDat[3][16] =
{
/* G R B */
{ 0, 0, 0}, /* C_BALCK, C_THROUGH */
{ 0, 0, 0}, /* C_BLUE , C_MBLACK */
{ 7, 7, 8}, /* C_RED */
{12,12,13}, /* C_MAGENTA */
{ 6, 5, 7}, /* C_GREEN */
{ 8, 7, 9}, /* C_CYAN */
{10, 9,11}, /* C_YELLOW */
{11,11,12}, /* C_WHITE */
{ 5, 5, 6}, /* C_HBALCK */
{ 0, 0,11}, /* C_HBLUE */
{ 0,11, 0}, /* C_HRED */
{ 0,11,11}, /* C_HMAGENTA */
{11, 0, 0}, /* C_HGEEN */
{11, 0,11}, /* C_HCYAN */
{11,11, 0}, /* C_HYELLOW */
{14,14,15} /* C_HWHITE */
};
/*************************************************************************
* 初期化
*************************************************************************/
int init()
{
DSP_sysInit(0); /* 表示システム初期化 */
KBF_sysInit(); /* キーボードシステム初期化 */
KBF_kan_off();
FDL_sysInit(); /* ファイルダイアログ初期化 */
sdk_control(0); /* サイドワーク起動禁止 */
DSP_setPlt( PltDat ); /* パレット設定 */
DSP_writePage(1);
DSP_title("INSTALL","0.99",15,7,0,0);
evt_setDspTime( 1, 432, 4, 7, 0 ); /* 時刻表示アイドリング処理設定 */
SYL_clear();
}
/*************************************************************************
* 終了
*************************************************************************/
int term()
{
FDL_sysEnd();
KBF_sysEnd();
DSP_sysEnd();
}
char *AplName = "CCI"; /* インストールするアプリの名前 */
char *NewDir = "CCI"; /* 作成するディレクトリの名前 */
char StartPath[256];
char ItmPath[256]; /* アイテムファイル */
char *File1[3] = /* インストールするファイル */
{
"cci.exp", /* 実行プログラム */
"cci.man", /* 説明ファイル */
NULL
};
#define FRM_X1(_frm) _frm[0]
#define FRM_Y1(_frm) _frm[1]
#define FRM_X2(_frm) _frm[2]
#define FRM_Y2(_frm) _frm[3]
int item_set_newpos( short *newfrm )
{
int ret;
int fpos, nextFPos;
int etyNum;
short icnNum;
char ttlStr[128];
char pathStr[128];
char paraStr[128];
int atrInf;
int nextFPos;
short frm[4];
fpos = 0;
FRM_X1(newfrm) = 0;
FRM_Y1(newfrm) = 0;
FRM_X2(newfrm) = 0;
FRM_Y2(newfrm) = 0;
while ( (fpos = ITM_GetPhysclNextFPos( ItmPath, fpos )) > 0 )
{
if ( ITM_GetStair( ItmPath, fpos ) == 0 )
{ /* ルートのみ */
ret = ITM_GetItmType(ItmPath,fpos);
switch ( ret )
{
case 1: /* group */
ITM_GetGrpData(ItmPath,fpos,&etyNum,&icnNum,ttlStr,&nextFPos,frm);
break;
case 2: /* apllication */
ITM_GetAplData(ItmPath,fpos,&icnNum,ttlStr,pathStr,paraStr,atrInf,frm);
break;
}
if ( FRM_X1(newfrm) < FRM_X2(frm) )
FRM_X1(newfrm) = FRM_X2(frm);
if ( FRM_Y1(newfrm) < FRM_Y2(frm) )
FRM_Y1(newfrm) = FRM_Y2(frm);
}
}
FRM_Y1(newfrm) = FRM_Y1(newfrm) + 15;
FRM_X2(newfrm) = FRM_X1(newfrm) + 24;
FRM_Y2(newfrm) = FRM_Y1(newfrm) + 24;
if ( FRM_X2(newfrm) > 621 )
{
FRM_X2(newfrm) = 621;
FRM_X1(newfrm) = FRM_X2(newfrm) - 24;
}
if ( FRM_Y2(newfrm) > 410 )
{
FRM_Y2(newfrm) = 410;
FRM_Y1(newfrm) = FRM_Y2(newfrm) - 24;
}
}
/*************************************************************************
* インストール
*************************************************************************/
int install()
{
int i, ret, len;
char *btn;
char *fdl;
int drv;
char *p, tmp[256], path[256], whare[256], src[256], dst[256];
short frm[4];
_RETRY:
btn = MNU_allocBtn( 2 );
MNU_setBtn( btn, 0, '\r' , KA_EXEC , 1, "INSTALL : [実行]" );
MNU_setBtn( btn, 1, '\x1B', KA_CANCEL, 2, "CANECEL : [取消]" );
ret = MNU_selectBtn( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN,
C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_LEFT, 2, btn,
" %s のインストールを行いますか? ", AplName );
MNU_freeBtn( btn );
if ( ret != 1 )
return (0);
DLG_tmpMsgTime( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN,
C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
3, "\n インストール先に移動してください。 \n" );
/* インストール */
if ( (fdl = FDL_open(0)) == NULL )
return (-1);
FDL_set_title( fdl,"インストール先指定");
FDL_set_wildcard( fdl, "*.*");
ret = FDL_start(fdl);
if ( ret == NORMAL )
{
drv = FDL_get_drv(fdl);
strcpy( whare, FDL_get_whare(fdl) );
}
FDL_close(fdl);
if ( ret )
goto _RETRY;
sprintf( tmp, "%c:/%s", drv+'A', whare );
len = strlen(tmp);
if ( len > 0 && tmp[len-1] != '/' && tmp[len-1] != '\\' )
{
tmp[len++] = '/';
tmp[len] = '\0';
}
sprintf( path, "%s%s", tmp, NewDir);
ret = FS_isFileExist(path);
if ( ret == 0 )
{ /* ファイルは存在しない */
/* ディレクトリ作成確認 */
btn = MNU_allocBtn( 2 );
MNU_setBtn( btn, 0, '\r' , KA_EXEC , 1, "MKDIR : [実行]" );
MNU_setBtn( btn, 1, '\x1B', KA_CANCEL, 2, "CANECEL : [取消]" );
ret = MNU_selectBtn( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN,
C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_CENTER, 2, btn,
" インストール先にディレクトリを作成します。 \n%s", path );
MNU_freeBtn( btn );
if ( ret != 1 )
goto _RETRY;
FS_mkdir(path);
} else if ( ret == 1 )
{ /* ファイルが存在 */
MNU_sure( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN,
C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY), SELBTN_ATT_CENTER,
" %s \n インストール先に同名のファイルが存在しています。 ", path );
goto _RETRY;
}
/* インストール先確認 --------------------------------------------*/
btn = MNU_allocBtn( 2 );
MNU_setBtn( btn, 0, '\r' , KA_EXEC , 1, "INSTALL : [実行]" );
MNU_setBtn( btn, 1, '\x1B', KA_CANCEL, 2, "CANECEL : [取消]" );
ret = MNU_selectBtn( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN,
C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_CENTER, 2, btn,
" インストール先 : %s \n インストールを行いますか? ", path );
MNU_freeBtn( btn );
if ( ret != 1 )
goto _RETRY;
/* ファイルの複写 ------------------------------------------------*/
ret = i = 0;
while ( (p = File1[i++]) != NULL && ret == 0 )
{
SYL_puts( C_INFO, "copy %s", p );
sprintf( src, "%s%s", StartPath, p );
ret = FileCopy2( src, path, FCOPY_OVERWRITE_CHECK|FCOPY_LAST_MSG_IGN );
}
if ( ret )
{ /* error */
MNU_sure( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN,
C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY), SELBTN_ATT_CENTER,
"FILE COPY ERROR\n インストールに失敗しました。 " );
return (-1);
}
/* アイテム登録 ------------------------------------------------*/
SYL_puts( C_INFO, "アイテム登録を行います。" );
sprintf( ItmPath, "%c:\\tmenu.itm", drv+'A');
if ( FS_isFileExist(ItmPath) == 0 )
{ /* アイテムファイルま作成 */
ITM_CreateItemFile(ItmPath);
}
item_set_newpos( frm );
sprintf( tmp, "%s/%s", path, File1[0]);
FS_unix2dos( dst, tmp );
ITM_AddAplItem( ItmPath, 0, 1024, AplName, dst, "", 0, frm );
SYL_puts( C_INFO, "***** Completed *****");
DLG_tmpMsgTime( DLGPOS_CENTER_OF_SCN, DLGPOS_CENTER_OF_SCN,
C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
3, " インストール終了しました。 " );
return (0);
}
/*************************************************************************
* MAIN
*************************************************************************/
int main( int argc, char **argv )
{
char tmp[256];
init();
FS_setFullPathname( tmp, argv[0] );
FS_getDnam( StartPath, tmp );
install();
term();
return (0);
}